package com.demo.java.OD501_550.OD521;

import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【导师请吃火锅(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146485195
 */
public class OdMain {
    public static void main(String[] args) {
        // 输入处理
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();  // 读取菜品数量
        int m = in.nextInt();  // 读取每道菜品的最小间隔时间
        int[] x = new int[n];  // 每道菜的准备时间
        int[] y = new int[n];  // 每道菜的等待时间

        // 读取菜品的准备时间和等待时间
        for (int i = 0; i < n; i++) {
            x[i] = in.nextInt();
            y[i] = in.nextInt();
        }

        // 计算每道菜的总时间，并存入数组 dishs
        int[] dishs = new int[n];
        for (int i = 0; i < n; i++) {
            dishs[i] = x[i] + y[i];
        }

        // 对菜品的总时间进行排序
        Arrays.sort(dishs);

        // 用于记录每道菜是否被选择
        int[] res_arr = new int[n];
        int next = 0;  // 记录上一道被选择菜的索引
        res_arr[0] = 1;  // 第一道菜肯定被选择

        // 使用贪心策略选择菜品
        for (int i = 1; i < n; i++) {
            // 如果当前菜品的总时间大于或等于上一道菜的总时间 + 最小间隔 m，则选择当前菜
            if (dishs[i] >= (dishs[next] + m)) {
                res_arr[i] = 1;
                next = i;  // 更新下一道选择的菜品
            }
        }

        // 统计被选择的菜品数量
        int count = 0;
        for (int i = 0; i < n; i++) {
            if (res_arr[i] > 0) {
                count++;
            }
        }

        // 输出选择的菜品数量
        System.out.println(count);
    }
}